import pygame
from pygame.locals import*
from sys import exit
import time
import random

from Personagens import *
from Elementos import *
from Metodos import *
from Stages import *

elementos_fase = fase(1)

fundo = pygame.image.load(elementos_fase[0])

def jogo(nome_jogador, elementos_fase, boomColide, num_vidas, personagem):
    if personagem == 'personagem_branco':
        frame_morte = ["imagens/boom_moviments/boomBranco/morte_1.png","imagens/boom_moviments/boomBranco/morte_2.png","imagens/boom_moviments/boomBranco/morte_3.png","imagens/boom_moviments/boomBranco/morte_4.png","imagens/boom_moviments/boomBranco/morte_5.png","imagens/boom_moviments/boomBranco/morte_6.png","imagens/boom_moviments/boomBranco/morte_7.png"]
        frame_direita = ["imagens/boom_moviments/boomBranco/direita_1.png","imagens/boom_moviments/boomBranco/direita_1.png","imagens/boom_moviments/boomBranco/direita_1.png","imagens/boom_moviments/boomBranco/direita_2.png","imagens/boom_moviments/boomBranco/direita_2.png","imagens/boom_moviments/boomBranco/direita_2.png","imagens/boom_moviments/boomBranco/direita_1.png","imagens/boom_moviments/boomBranco/direita_1.png","imagens/boom_moviments/boomBranco/direita_1.png","imagens/boom_moviments/boomBranco/direita_3.png","imagens/boom_moviments/boomBranco/direita_3.png","imagens/boom_moviments/boomBranco/direita_3.png"]
        frame_esquerda = ["imagens/boom_moviments/boomBranco/esquerda_1.png","imagens/boom_moviments/boomBranco/esquerda_1.png","imagens/boom_moviments/boomBranco/esquerda_1.png","imagens/boom_moviments/boomBranco/esquerda_2.png","imagens/boom_moviments/boomBranco/esquerda_2.png","imagens/boom_moviments/boomBranco/esquerda_2.png","imagens/boom_moviments/boomBranco/esquerda_1.png","imagens/boom_moviments/boomBranco/esquerda_1.png","imagens/boom_moviments/boomBranco/esquerda_1.png","imagens/boom_moviments/boomBranco/esquerda_3.png","imagens/boom_moviments/boomBranco/esquerda_3.png","imagens/boom_moviments/boomBranco/esquerda_3.png"]
        frame_descendo = ["imagens/boom_moviments/boomBranco/descendo_1.png","imagens/boom_moviments/boomBranco/descendo_1.png","imagens/boom_moviments/boomBranco/descendo_1.png","imagens/boom_moviments/boomBranco/descendo_2.png","imagens/boom_moviments/boomBranco/descendo_2.png","imagens/boom_moviments/boomBranco/descendo_2.png","imagens/boom_moviments/boomBranco/descendo_1.png","imagens/boom_moviments/boomBranco/descendo_1.png","imagens/boom_moviments/boomBranco/descendo_1.png","imagens/boom_moviments/boomBranco/descendo_3.png","imagens/boom_moviments/boomBranco/descendo_3.png","imagens/boom_moviments/boomBranco/descendo_3.png"]
        frame_subindo = ["imagens/boom_moviments/boomBranco/subindo_1.png","imagens/boom_moviments/boomBranco/subindo_1.png","imagens/boom_moviments/boomBranco/subindo_1.png","imagens/boom_moviments/boomBranco/subindo_2.png","imagens/boom_moviments/boomBranco/subindo_2.png","imagens/boom_moviments/boomBranco/subindo_2.png","imagens/boom_moviments/boomBranco/subindo_1.png","imagens/boom_moviments/boomBranco/subindo_1.png","imagens/boom_moviments/boomBranco/subindo_1.png","imagens/boom_moviments/boomBranco/subindo_3.png","imagens/boom_moviments/boomBranco/subindo_3.png","imagens/boom_moviments/boomBranco/subindo_3.png"]
    elif personagem == 'personagem_preto':
        frame_morte = ["imagens/boom_moviments/boomPreto/morte_1.png","imagens/boom_moviments/boomPreto/morte_2.png","imagens/boom_moviments/boomPreto/morte_3.png","imagens/boom_moviments/boomPreto/morte_4.png","imagens/boom_moviments/boomPreto/morte_5.png","imagens/boom_moviments/boomPreto/morte_6.png","imagens/boom_moviments/boomPreto/morte_7.png"]
        frame_direita = ["imagens/boom_moviments/boomPreto/direita_1.png","imagens/boom_moviments/boomPreto/direita_1.png","imagens/boom_moviments/boomPreto/direita_1.png","imagens/boom_moviments/boomPreto/direita_2.png","imagens/boom_moviments/boomPreto/direita_2.png","imagens/boom_moviments/boomPreto/direita_2.png","imagens/boom_moviments/boomPreto/direita_1.png","imagens/boom_moviments/boomPreto/direita_1.png","imagens/boom_moviments/boomPreto/direita_1.png","imagens/boom_moviments/boomPreto/direita_3.png","imagens/boom_moviments/boomPreto/direita_3.png","imagens/boom_moviments/boomPreto/direita_3.png"]
        frame_esquerda = ["imagens/boom_moviments/boomPreto/esquerda_1.png","imagens/boom_moviments/boomPreto/esquerda_1.png","imagens/boom_moviments/boomPreto/esquerda_1.png","imagens/boom_moviments/boomPreto/esquerda_2.png","imagens/boom_moviments/boomPreto/esquerda_2.png","imagens/boom_moviments/boomPreto/esquerda_2.png","imagens/boom_moviments/boomPreto/esquerda_1.png","imagens/boom_moviments/boomPreto/esquerda_1.png","imagens/boom_moviments/boomPreto/esquerda_1.png","imagens/boom_moviments/boomPreto/esquerda_3.png","imagens/boom_moviments/boomPreto/esquerda_3.png","imagens/boom_moviments/boomPreto/esquerda_3.png"]
        frame_descendo = ["imagens/boom_moviments/boomPreto/descendo_1.png","imagens/boom_moviments/boomPreto/descendo_1.png","imagens/boom_moviments/boomPreto/descendo_1.png","imagens/boom_moviments/boomPreto/descendo_2.png","imagens/boom_moviments/boomPreto/descendo_2.png","imagens/boom_moviments/boomPreto/descendo_2.png","imagens/boom_moviments/boomPreto/descendo_1.png","imagens/boom_moviments/boomPreto/descendo_1.png","imagens/boom_moviments/boomPreto/descendo_1.png","imagens/boom_moviments/boomPreto/descendo_3.png","imagens/boom_moviments/boomPreto/descendo_3.png","imagens/boom_moviments/boomPreto/descendo_3.png"]
        frame_subindo = ["imagens/boom_moviments/boomPreto/subindo_1.png","imagens/boom_moviments/boomPreto/subindo_1.png","imagens/boom_moviments/boomPreto/subindo_1.png","imagens/boom_moviments/boomPreto/subindo_2.png","imagens/boom_moviments/boomPreto/subindo_2.png","imagens/boom_moviments/boomPreto/subindo_2.png","imagens/boom_moviments/boomPreto/subindo_1.png","imagens/boom_moviments/boomPreto/subindo_1.png","imagens/boom_moviments/boomPreto/subindo_1.png","imagens/boom_moviments/boomPreto/subindo_3.png","imagens/boom_moviments/boomPreto/subindo_3.png","imagens/boom_moviments/boomPreto/subindo_3.png"]
    elif personagem == 'personagem_azul':
        frame_morte = ["imagens/boom_moviments/boomAzul/morte_1.png","imagens/boom_moviments/boomAzul/morte_2.png","imagens/boom_moviments/boomAzul/morte_3.png","imagens/boom_moviments/boomAzul/morte_4.png","imagens/boom_moviments/boomAzul/morte_5.png","imagens/boom_moviments/boomAzul/morte_6.png","imagens/boom_moviments/boomAzul/morte_7.png"]
        frame_direita = ["imagens/boom_moviments/boomAzul/direita_1.png","imagens/boom_moviments/boomAzul/direita_1.png","imagens/boom_moviments/boomAzul/direita_1.png","imagens/boom_moviments/boomAzul/direita_2.png","imagens/boom_moviments/boomAzul/direita_2.png","imagens/boom_moviments/boomAzul/direita_2.png","imagens/boom_moviments/boomAzul/direita_1.png","imagens/boom_moviments/boomAzul/direita_1.png","imagens/boom_moviments/boomAzul/direita_1.png","imagens/boom_moviments/boomAzul/direita_3.png","imagens/boom_moviments/boomAzul/direita_3.png","imagens/boom_moviments/boomAzul/direita_3.png"]
        frame_esquerda = ["imagens/boom_moviments/boomAzul/esquerda_1.png","imagens/boom_moviments/boomAzul/esquerda_1.png","imagens/boom_moviments/boomAzul/esquerda_1.png","imagens/boom_moviments/boomAzul/esquerda_2.png","imagens/boom_moviments/boomAzul/esquerda_2.png","imagens/boom_moviments/boomAzul/esquerda_2.png","imagens/boom_moviments/boomAzul/esquerda_1.png","imagens/boom_moviments/boomAzul/esquerda_1.png","imagens/boom_moviments/boomAzul/esquerda_1.png","imagens/boom_moviments/boomAzul/esquerda_3.png","imagens/boom_moviments/boomAzul/esquerda_3.png","imagens/boom_moviments/boomAzul/esquerda_3.png"]
        frame_descendo = ["imagens/boom_moviments/boomAzul/descendo_1.png","imagens/boom_moviments/boomAzul/descendo_1.png","imagens/boom_moviments/boomAzul/descendo_1.png","imagens/boom_moviments/boomAzul/descendo_2.png","imagens/boom_moviments/boomAzul/descendo_2.png","imagens/boom_moviments/boomAzul/descendo_2.png","imagens/boom_moviments/boomAzul/descendo_1.png","imagens/boom_moviments/boomAzul/descendo_1.png","imagens/boom_moviments/boomAzul/descendo_1.png","imagens/boom_moviments/boomAzul/descendo_3.png","imagens/boom_moviments/boomAzul/descendo_3.png","imagens/boom_moviments/boomAzul/descendo_3.png"]
        frame_subindo = ["imagens/boom_moviments/boomAzul/subindo_1.png","imagens/boom_moviments/boomAzul/subindo_1.png","imagens/boom_moviments/boomAzul/subindo_1.png","imagens/boom_moviments/boomAzul/subindo_2.png","imagens/boom_moviments/boomAzul/subindo_2.png","imagens/boom_moviments/boomAzul/subindo_2.png","imagens/boom_moviments/boomAzul/subindo_1.png","imagens/boom_moviments/boomAzul/subindo_1.png","imagens/boom_moviments/boomAzul/subindo_1.png","imagens/boom_moviments/boomAzul/subindo_3.png","imagens/boom_moviments/boomAzul/subindo_3.png","imagens/boom_moviments/boomAzul/subindo_3.png"]
    elif personagem == 'personagem_vermelho':
        frame_morte = ["imagens/boom_moviments/boomVermelho/morte_1.png","imagens/boom_moviments/boomVermelho/morte_2.png","imagens/boom_moviments/boomVermelho/morte_3.png","imagens/boom_moviments/boomVermelho/morte_4.png","imagens/boom_moviments/boomVermelho/morte_5.png","imagens/boom_moviments/boomVermelho/morte_6.png","imagens/boom_moviments/boomVermelho/morte_7.png"]
        frame_direita = ["imagens/boom_moviments/boomVermelho/direita_1.png","imagens/boom_moviments/boomVermelho/direita_1.png","imagens/boom_moviments/boomVermelho/direita_1.png","imagens/boom_moviments/boomVermelho/direita_2.png","imagens/boom_moviments/boomVermelho/direita_2.png","imagens/boom_moviments/boomVermelho/direita_2.png","imagens/boom_moviments/boomVermelho/direita_1.png","imagens/boom_moviments/boomVermelho/direita_1.png","imagens/boom_moviments/boomVermelho/direita_1.png","imagens/boom_moviments/boomVermelho/direita_3.png","imagens/boom_moviments/boomVermelho/direita_3.png","imagens/boom_moviments/boomVermelho/direita_3.png"]
        frame_esquerda = ["imagens/boom_moviments/boomVermelho/esquerda_1.png","imagens/boom_moviments/boomVermelho/esquerda_1.png","imagens/boom_moviments/boomVermelho/esquerda_1.png","imagens/boom_moviments/boomVermelho/esquerda_2.png","imagens/boom_moviments/boomVermelho/esquerda_2.png","imagens/boom_moviments/boomVermelho/esquerda_2.png","imagens/boom_moviments/boomVermelho/esquerda_1.png","imagens/boom_moviments/boomVermelho/esquerda_1.png","imagens/boom_moviments/boomVermelho/esquerda_1.png","imagens/boom_moviments/boomVermelho/esquerda_3.png","imagens/boom_moviments/boomVermelho/esquerda_3.png","imagens/boom_moviments/boomVermelho/esquerda_3.png"]
        frame_descendo = ["imagens/boom_moviments/boomVermelho/descendo_1.png","imagens/boom_moviments/boomVermelho/descendo_1.png","imagens/boom_moviments/boomVermelho/descendo_1.png","imagens/boom_moviments/boomVermelho/descendo_2.png","imagens/boom_moviments/boomVermelho/descendo_2.png","imagens/boom_moviments/boomVermelho/descendo_2.png","imagens/boom_moviments/boomVermelho/descendo_1.png","imagens/boom_moviments/boomVermelho/descendo_1.png","imagens/boom_moviments/boomVermelho/descendo_1.png","imagens/boom_moviments/boomVermelho/descendo_3.png","imagens/boom_moviments/boomVermelho/descendo_3.png","imagens/boom_moviments/boomVermelho/descendo_3.png"]
        frame_subindo = ["imagens/boom_moviments/boomVermelho/subindo_1.png","imagens/boom_moviments/boomVermelho/subindo_1.png","imagens/boom_moviments/boomVermelho/subindo_1.png","imagens/boom_moviments/boomVermelho/subindo_2.png","imagens/boom_moviments/boomVermelho/subindo_2.png","imagens/boom_moviments/boomVermelho/subindo_2.png","imagens/boom_moviments/boomVermelho/subindo_1.png","imagens/boom_moviments/boomVermelho/subindo_1.png","imagens/boom_moviments/boomVermelho/subindo_1.png","imagens/boom_moviments/boomVermelho/subindo_3.png","imagens/boom_moviments/boomVermelho/subindo_3.png","imagens/boom_moviments/boomVermelho/subindo_3.png"]
    elif personagem == 'personagem_verde':
        frame_morte = ["imagens/boom_moviments/boomVerde/morte_1.png","imagens/boom_moviments/boomVerde/morte_2.png","imagens/boom_moviments/boomVerde/morte_3.png","imagens/boom_moviments/boomVerde/morte_4.png","imagens/boom_moviments/boomVerde/morte_5.png","imagens/boom_moviments/boomVerde/morte_6.png","imagens/boom_moviments/boomVerde/morte_7.png"]
        frame_direita = ["imagens/boom_moviments/boomVerde/direita_1.png","imagens/boom_moviments/boomVerde/direita_1.png","imagens/boom_moviments/boomVerde/direita_1.png","imagens/boom_moviments/boomVerde/direita_2.png","imagens/boom_moviments/boomVerde/direita_2.png","imagens/boom_moviments/boomVerde/direita_2.png","imagens/boom_moviments/boomVerde/direita_1.png","imagens/boom_moviments/boomVerde/direita_1.png","imagens/boom_moviments/boomVerde/direita_1.png","imagens/boom_moviments/boomVerde/direita_3.png","imagens/boom_moviments/boomVerde/direita_3.png","imagens/boom_moviments/boomVerde/direita_3.png"]
        frame_esquerda = ["imagens/boom_moviments/boomVerde/esquerda_1.png","imagens/boom_moviments/boomVerde/esquerda_1.png","imagens/boom_moviments/boomVerde/esquerda_1.png","imagens/boom_moviments/boomVerde/esquerda_2.png","imagens/boom_moviments/boomVerde/esquerda_2.png","imagens/boom_moviments/boomVerde/esquerda_2.png","imagens/boom_moviments/boomVerde/esquerda_1.png","imagens/boom_moviments/boomVerde/esquerda_1.png","imagens/boom_moviments/boomVerde/esquerda_1.png","imagens/boom_moviments/boomVerde/esquerda_3.png","imagens/boom_moviments/boomVerde/esquerda_3.png","imagens/boom_moviments/boomVerde/esquerda_3.png"]
        frame_descendo = ["imagens/boom_moviments/boomVerde/descendo_1.png","imagens/boom_moviments/boomVerde/descendo_1.png","imagens/boom_moviments/boomVerde/descendo_1.png","imagens/boom_moviments/boomVerde/descendo_2.png","imagens/boom_moviments/boomVerde/descendo_2.png","imagens/boom_moviments/boomVerde/descendo_2.png","imagens/boom_moviments/boomVerde/descendo_1.png","imagens/boom_moviments/boomVerde/descendo_1.png","imagens/boom_moviments/boomVerde/descendo_1.png","imagens/boom_moviments/boomVerde/descendo_3.png","imagens/boom_moviments/boomVerde/descendo_3.png","imagens/boom_moviments/boomVerde/descendo_3.png"]
        frame_subindo = ["imagens/boom_moviments/boomVerde/subindo_1.png","imagens/boom_moviments/boomVerde/subindo_1.png","imagens/boom_moviments/boomVerde/subindo_1.png","imagens/boom_moviments/boomVerde/subindo_2.png","imagens/boom_moviments/boomVerde/subindo_2.png","imagens/boom_moviments/boomVerde/subindo_2.png","imagens/boom_moviments/boomVerde/subindo_1.png","imagens/boom_moviments/boomVerde/subindo_1.png","imagens/boom_moviments/boomVerde/subindo_1.png","imagens/boom_moviments/boomVerde/subindo_3.png","imagens/boom_moviments/boomVerde/subindo_3.png","imagens/boom_moviments/boomVerde/subindo_3.png"]

    img_fundo_tela = elementos_fase[0]
    img_parede_centro = elementos_fase[1]
    img_parede_redor = elementos_fase[2]
    img_muro = elementos_fase[3]
    quant_monstros = elementos_fase[4]
    num_vidas_monstros = elementos_fase[5]
    musica = elementos_fase[6]

    if quant_monstros == 3:
        monster_frames_direita = ["imagens/monster_moviments/monstro_fase1/direita_1.png", "imagens/monster_moviments/monstro_fase1/direita_1.png", "imagens/monster_moviments/monstro_fase1/direita_1.png", "imagens/monster_moviments/monstro_fase1/direita_2.png", "imagens/monster_moviments/monstro_fase1/direita_2.png", "imagens/monster_moviments/monstro_fase1/direita_2.png", "imagens/monster_moviments/monstro_fase1/direita_3.png", "imagens/monster_moviments/monstro_fase1/direita_3.png", "imagens/monster_moviments/monstro_fase1/direita_3.png", "imagens/monster_moviments/monstro_fase1/direita_4.png", "imagens/monster_moviments/monstro_fase1/direita_4.png", "imagens/monster_moviments/monstro_fase1/direita_4.png"]
        monster_frames_esquerda = ["imagens/monster_moviments/monstro_fase1/esquerda_1.png", "imagens/monster_moviments/monstro_fase1/esquerda_1.png", "imagens/monster_moviments/monstro_fase1/esquerda_1.png", "imagens/monster_moviments/monstro_fase1/esquerda_2.png", "imagens/monster_moviments/monstro_fase1/esquerda_2.png", "imagens/monster_moviments/monstro_fase1/esquerda_2.png", "imagens/monster_moviments/monstro_fase1/esquerda_3.png", "imagens/monster_moviments/monstro_fase1/esquerda_3.png", "imagens/monster_moviments/monstro_fase1/esquerda_3.png", "imagens/monster_moviments/monstro_fase1/esquerda_4.png", "imagens/monster_moviments/monstro_fase1/esquerda_4.png", "imagens/monster_moviments/monstro_fase1/esquerda_4.png"]
        monster_frames_subindo = ["imagens/monster_moviments/monstro_fase1/subindo_1.png", "imagens/monster_moviments/monstro_fase1/subindo_1.png", "imagens/monster_moviments/monstro_fase1/subindo_1.png", "imagens/monster_moviments/monstro_fase1/subindo_2.png", "imagens/monster_moviments/monstro_fase1/subindo_2.png", "imagens/monster_moviments/monstro_fase1/subindo_2.png", "imagens/monster_moviments/monstro_fase1/subindo_3.png", "imagens/monster_moviments/monstro_fase1/subindo_3.png", "imagens/monster_moviments/monstro_fase1/subindo_3.png", "imagens/monster_moviments/monstro_fase1/subindo_4.png", "imagens/monster_moviments/monstro_fase1/subindo_4.png", "imagens/monster_moviments/monstro_fase1/subindo_4.png"]
        monster_frames_descendo = ["imagens/monster_moviments/monstro_fase1/descendo_1.png", "imagens/monster_moviments/monstro_fase1/descendo_1.png", "imagens/monster_moviments/monstro_fase1/descendo_1.png", "imagens/monster_moviments/monstro_fase1/descendo_2.png", "imagens/monster_moviments/monstro_fase1/descendo_2.png", "imagens/monster_moviments/monstro_fase1/descendo_2.png", "imagens/monster_moviments/monstro_fase1/descendo_3.png", "imagens/monster_moviments/monstro_fase1/descendo_3.png", "imagens/monster_moviments/monstro_fase1/descendo_3.png", "imagens/monster_moviments/monstro_fase1/descendo_4.png", "imagens/monster_moviments/monstro_fase1/descendo_4.png", "imagens/monster_moviments/monstro_fase1/descendo_4.png"]
        monster_frames_morte = ["imagens/monster_moviments/monstro_fase1/morte_1.png", "imagens/monster_moviments/monstro_fase1/morte_2.png", "imagens/monster_moviments/monstro_fase1/morte_3.png", "imagens/monster_moviments/monstro_fase1/morte_4.png", "imagens/monster_moviments/monstro_fase1/morte_5.png", "imagens/monster_moviments/monstro_fase1/morte_6.png", "imagens/monster_moviments/monstro_fase1/morte_7.png"]
    elif quant_monstros == 4:
        monster_frames_direita = ["imagens/monster_moviments/monstro_fase2/direita_1.png", "imagens/monster_moviments/monstro_fase2/direita_1.png", "imagens/monster_moviments/monstro_fase2/direita_1.png", "imagens/monster_moviments/monstro_fase2/direita_2.png", "imagens/monster_moviments/monstro_fase2/direita_2.png", "imagens/monster_moviments/monstro_fase2/direita_2.png", "imagens/monster_moviments/monstro_fase2/direita_3.png", "imagens/monster_moviments/monstro_fase2/direita_3.png", "imagens/monster_moviments/monstro_fase2/direita_3.png", "imagens/monster_moviments/monstro_fase2/direita_4.png", "imagens/monster_moviments/monstro_fase2/direita_4.png", "imagens/monster_moviments/monstro_fase2/direita_4.png"]
        monster_frames_esquerda = ["imagens/monster_moviments/monstro_fase2/esquerda_1.png", "imagens/monster_moviments/monstro_fase2/esquerda_1.png", "imagens/monster_moviments/monstro_fase2/esquerda_1.png", "imagens/monster_moviments/monstro_fase2/esquerda_2.png", "imagens/monster_moviments/monstro_fase2/esquerda_2.png", "imagens/monster_moviments/monstro_fase2/esquerda_2.png", "imagens/monster_moviments/monstro_fase2/esquerda_3.png", "imagens/monster_moviments/monstro_fase2/esquerda_3.png", "imagens/monster_moviments/monstro_fase2/esquerda_3.png", "imagens/monster_moviments/monstro_fase2/esquerda_4.png", "imagens/monster_moviments/monstro_fase2/esquerda_4.png", "imagens/monster_moviments/monstro_fase2/esquerda_4.png"]
        monster_frames_subindo = ["imagens/monster_moviments/monstro_fase2/subindo_1.png", "imagens/monster_moviments/monstro_fase2/subindo_1.png", "imagens/monster_moviments/monstro_fase2/subindo_1.png", "imagens/monster_moviments/monstro_fase2/subindo_2.png", "imagens/monster_moviments/monstro_fase2/subindo_2.png", "imagens/monster_moviments/monstro_fase2/subindo_2.png", "imagens/monster_moviments/monstro_fase2/subindo_3.png", "imagens/monster_moviments/monstro_fase2/subindo_3.png", "imagens/monster_moviments/monstro_fase2/subindo_3.png", "imagens/monster_moviments/monstro_fase2/subindo_4.png", "imagens/monster_moviments/monstro_fase2/subindo_4.png", "imagens/monster_moviments/monstro_fase2/subindo_4.png"]
        monster_frames_descendo = ["imagens/monster_moviments/monstro_fase2/descendo_1.png", "imagens/monster_moviments/monstro_fase2/descendo_1.png", "imagens/monster_moviments/monstro_fase2/descendo_1.png", "imagens/monster_moviments/monstro_fase2/descendo_2.png", "imagens/monster_moviments/monstro_fase2/descendo_2.png", "imagens/monster_moviments/monstro_fase2/descendo_2.png", "imagens/monster_moviments/monstro_fase2/descendo_3.png", "imagens/monster_moviments/monstro_fase2/descendo_3.png", "imagens/monster_moviments/monstro_fase2/descendo_3.png", "imagens/monster_moviments/monstro_fase2/descendo_4.png", "imagens/monster_moviments/monstro_fase2/descendo_4.png", "imagens/monster_moviments/monstro_fase2/descendo_4.png"]
        monster_frames_morte = ["imagens/monster_moviments/monstro_fase2/morte_1.png", "imagens/monster_moviments/monstro_fase2/morte_2.png", "imagens/monster_moviments/monstro_fase2/morte_3.png", "imagens/monster_moviments/monstro_fase2/morte_4.png", "imagens/monster_moviments/monstro_fase2/morte_5.png", "imagens/monster_moviments/monstro_fase2/morte_6.png", "imagens/monster_moviments/monstro_fase2/morte_7.png"]
    elif quant_monstros == 5:
        monster_frames_direita = ["imagens/monster_moviments/monstro_fase3/direita_1.png", "imagens/monster_moviments/monstro_fase3/direita_1.png", "imagens/monster_moviments/monstro_fase3/direita_1.png", "imagens/monster_moviments/monstro_fase3/direita_2.png", "imagens/monster_moviments/monstro_fase3/direita_2.png", "imagens/monster_moviments/monstro_fase3/direita_2.png", "imagens/monster_moviments/monstro_fase3/direita_3.png", "imagens/monster_moviments/monstro_fase3/direita_3.png", "imagens/monster_moviments/monstro_fase3/direita_3.png", "imagens/monster_moviments/monstro_fase3/direita_4.png", "imagens/monster_moviments/monstro_fase3/direita_4.png", "imagens/monster_moviments/monstro_fase3/direita_4.png"]
        monster_frames_esquerda = ["imagens/monster_moviments/monstro_fase3/esquerda_1.png", "imagens/monster_moviments/monstro_fase3/esquerda_1.png", "imagens/monster_moviments/monstro_fase3/esquerda_1.png", "imagens/monster_moviments/monstro_fase3/esquerda_2.png", "imagens/monster_moviments/monstro_fase3/esquerda_2.png", "imagens/monster_moviments/monstro_fase3/esquerda_2.png", "imagens/monster_moviments/monstro_fase3/esquerda_3.png", "imagens/monster_moviments/monstro_fase3/esquerda_3.png", "imagens/monster_moviments/monstro_fase3/esquerda_3.png", "imagens/monster_moviments/monstro_fase3/esquerda_4.png", "imagens/monster_moviments/monstro_fase3/esquerda_4.png", "imagens/monster_moviments/monstro_fase3/esquerda_4.png"]
        monster_frames_subindo = ["imagens/monster_moviments/monstro_fase3/subindo_1.png", "imagens/monster_moviments/monstro_fase3/subindo_1.png", "imagens/monster_moviments/monstro_fase3/subindo_1.png", "imagens/monster_moviments/monstro_fase3/subindo_2.png", "imagens/monster_moviments/monstro_fase3/subindo_2.png", "imagens/monster_moviments/monstro_fase3/subindo_2.png", "imagens/monster_moviments/monstro_fase3/subindo_3.png", "imagens/monster_moviments/monstro_fase3/subindo_3.png", "imagens/monster_moviments/monstro_fase3/subindo_3.png", "imagens/monster_moviments/monstro_fase3/subindo_4.png", "imagens/monster_moviments/monstro_fase3/subindo_4.png", "imagens/monster_moviments/monstro_fase3/subindo_4.png"]
        monster_frames_descendo = ["imagens/monster_moviments/monstro_fase3/descendo_1.png", "imagens/monster_moviments/monstro_fase3/descendo_1.png", "imagens/monster_moviments/monstro_fase3/descendo_1.png", "imagens/monster_moviments/monstro_fase3/descendo_2.png", "imagens/monster_moviments/monstro_fase3/descendo_2.png", "imagens/monster_moviments/monstro_fase3/descendo_2.png", "imagens/monster_moviments/monstro_fase3/descendo_3.png", "imagens/monster_moviments/monstro_fase3/descendo_3.png", "imagens/monster_moviments/monstro_fase3/descendo_3.png", "imagens/monster_moviments/monstro_fase3/descendo_4.png", "imagens/monster_moviments/monstro_fase3/descendo_4.png", "imagens/monster_moviments/monstro_fase3/descendo_4.png"]
        monster_frames_morte = ["imagens/monster_moviments/monstro_fase3/morte_1.png", "imagens/monster_moviments/monstro_fase3/morte_2.png", "imagens/monster_moviments/monstro_fase3/morte_3.png", "imagens/monster_moviments/monstro_fase3/morte_4.png", "imagens/monster_moviments/monstro_fase3/morte_5.png", "imagens/monster_moviments/monstro_fase3/morte_6.png", "imagens/monster_moviments/monstro_fase3/morte_7.png"]

    pygame.mixer.init(22050, -16, 2, 4096)
    explosao = pygame.mixer.Sound('sons/explosao.ogg')
    explosao.set_volume(2.0)
    pygame.mixer.music.load(musica)
    pygame.mixer.music.play(-1)
    
    fundo = pygame.image.load(img_fundo_tela)

    pause1 = 'imagens/imagens_jogo/tela_pause.png'
    imagem_pause = pygame.image.load(pause1)
    imagem_morte = pygame.image.load('imagens/imagens_jogo/tela_game_over.png')
    
    pause = False
    morto = False
    fullscreen = False
    tela_normal = True
    
    pygame.init()
    tempo_fase = (pygame.time.get_ticks()/1000) + 150
    
    screen = pygame.display.set_mode((750, 510), 0, 32)#pygame.FULLSCREEN)

    boom = Personagem(30, 0, frame_descendo[0])
    if quant_monstros == 3:
        boomColide = PersonagemColisao(30, 30, num_vidas)
    else:
        boomColide.rect.top = 30
        boomColide.rect.left = 30

    score_ao_entrar_na_fase = boomColide.score
    
    bombaGrupo = pygame.sprite.RenderPlain()
    monstroColideGrupo = pygame.sprite.RenderPlain()
    monstroGrupo = pygame.sprite.RenderPlain()
    grupoItens = pygame.sprite.RenderPlain()

    dicMonstros = instanciacaoMonstros(monstroGrupo, monstroColideGrupo, quant_monstros, num_vidas_monstros, monster_frames_descendo[0])
    paredeGrupo = desenhaParedes(dicMonstros, boomColide, img_parede_redor, img_parede_centro, img_muro)

    while True:
        while not pause and not morto:
            relogio = pygame.time.get_ticks()
            
            screen.blit(fundo,(0,0))

            for event in pygame.event.get():
                if event.type == KEYDOWN:
                    if event.key == K_LSHIFT and boomColide.num_bombas != 0:
                        boomColide.solta_bomba(boomColide, bombaGrupo, relogio)
                    if event.key == K_a and boomColide.bomba_relogio:
                        bombaGrupo = pygame.sprite.OrderedUpdates(bombaGrupo)
                        for bomba in bombaGrupo:
                            if bomba.tipo == 'bomba_relogio':
                                bomba.explosao_autorizada = True
                            break
                    elif event.key == K_SPACE:
                        for bomba in bombaGrupo:
                            if (boomColide.rect.top - bomba.rect.top == -30) and (boomColide.orientacao == 'baixo'):
                                bomba.foi_chutada = True
                                if bomba.direcao_move == '':
                                    bomba.direcao_move = boomColide.orientacao
                            elif (boomColide.rect.top - bomba.rect.top == 30) and (boomColide.orientacao == 'cima'):
                                bomba.foi_chutada = True
                                if bomba.direcao_move == '':
                                    bomba.direcao_move = boomColide.orientacao
                            elif (boomColide.rect.left - bomba.rect.left == -30) and (boomColide.orientacao == 'direita'):
                                bomba.foi_chutada = True
                                if bomba.direcao_move == '':
                                    bomba.direcao_move = boomColide.orientacao
                            elif (boomColide.rect.left - bomba.rect.left == 30) and (boomColide.orientacao == 'esquerda'):
                                bomba.foi_chutada = True
                                if bomba.direcao_move == '':
                                    bomba.direcao_move = boomColide.orientacao
                    elif event.key == K_F4:
                        if tela_normal == True:
                            fullscreen = True
                            tela_normal = False
                            screen = pygame.display.set_mode((750,510),FULLSCREEN, 32)
                        else:
                            None
                    
                    elif event.key == K_F5:
                        if fullscreen == True:
                            tela_normal = True
                            fullscreen = False
                            screen = pygame.display.set_mode((750,510),0, 32)
                        else:
                            None
                    elif event.key == K_RETURN:
                        pause1 = 'imagens/imagens_jogo/tela_pause.png'
                        imagem_pause = pygame.image.load(pause1)
                        pause = not pause
                            
                    elif event.key == K_ESCAPE:
                        pause1 = 'imagens/imagens_jogo/tela_pergunta_se_quer_sair.png'
                        imagem_pause = pygame.image.load(pause1)
                        pause = not pause
                        
            event = pygame.event.get
            
            if boomColide.esta_vivo:
                boom.move(event, paredeGrupo, boomColide, bombaGrupo, frame_direita, frame_esquerda, frame_descendo, frame_subindo)
            
            posicao_anterior = (boomColide.rect.left, boomColide.rect.top)
            
            for bomba1 in bombaGrupo:
                pos_anterior = bomba1.rect.left, bomba1.rect.top
                auxiliarGroup = bombaGrupo.copy()
                auxiliarGroup.remove(bomba1)
                auxiliarGroup.remove(bomba1)
                if boomColide.pode_chutar_bombas and bomba1.foi_chutada:
                    bomba1.move(bomba1.direcao_move)
                    if bomba1 in pygame.sprite.groupcollide(bombaGrupo, paredeGrupo, 0, 0) or bomba1 in pygame.sprite.groupcollide(bombaGrupo, auxiliarGroup, 0, 0) or bomba1 in pygame.sprite.groupcollide(bombaGrupo, monstroColideGrupo, 0, 0):
                        bomba1.rect.left, bomba1.rect.top = pos_anterior
                        bomba1.rect.top = arredonda_pos_bomba(bomba1.rect.top)
                        bomba1.rect.left = arredonda_pos_bomba(bomba1.rect.left)
                        bomba1.foi_chutada = False

                if (bomba1.rect.top % 30 == 0 and bomba1.rect.left % 30 == 0) and (bomba1.explosao_autorizada or bomba1.time == 'ta_na_hora_de_explodir' or (bomba1.tipo == 'normal' and (relogio - bomba1.time) > 2750)):
                    explosao.play()
                    bomba1.explode(bomba1, boomColide, paredeGrupo)

                    bomba1.grupo_explosao.draw(screen)

                    if not boomColide.invulneravel:
                        boomColide.morte(bombaGrupo, boom, screen)

                    for monstro in monstroGrupo:
                        for monstroColide in monstroColideGrupo:
                            if (monstro.rect.left == monstroColide.rect.left) and (monstro.rect.top == (monstroColide.rect.top - 30)):
                                monstroColide.morte(monstroColideGrupo, monstro, bombaGrupo, boomColide)
                    
                    dic = pygame.sprite.groupcollide(paredeGrupo, bomba1.grupo_explosao, 0, 0)
                    for parede in paredeGrupo:
                        if parede.tipo == 'muro_destroi' and parede in dic:
                            boomColide.score += 50
                            if not parede.item_tipo == '':
                                Itens(parede, grupoItens)
                            parede.kill()

                    for bombaN in bombaGrupo:
                        if bombaN in pygame.sprite.groupcollide(bombaGrupo, bomba1.grupo_explosao, 0, 0):
                            bombaN.time = 'ta_na_hora_de_explodir'

                    bomba1.grupo_explosao.empty()
                    bomba1.kill()
                    boomColide.num_bombas += 1

            for item in grupoItens:
                if item.tipo == 'aumenta_bomba' and item in pygame.sprite.groupcollide(grupoItens, boomColide.grupo, 0, 0):
                    boomColide.num_bombas += 1
                    boomColide.max_bombas += 1
                    item.kill()
                elif item.tipo == 'aumenta_fogo' and item in pygame.sprite.groupcollide(grupoItens, boomColide.grupo, 0, 0):
                    boomColide.potencia_bomba += 1
                    item.kill()
                elif item.tipo == 'aumenta_velocidade' and item in pygame.sprite.groupcollide(grupoItens, boomColide.grupo, 0, 0):
                    if boomColide.velocidade == 6:
                        boomColide.velocidade += 4
                    boomColide.rect.left = arredonda_pos_boom(boomColide.rect.left)
                    boomColide.rect.top = arredonda_pos_boom(boomColide.rect.top)
                    boom.rect.left = arredonda_pos_boom(boom.rect.left)
                    boom.rect.top = arredonda_pos_boom(boom.rect.top)
                    item.kill()
                elif item.tipo == 'bomba_relogio' and item in pygame.sprite.groupcollide(grupoItens, boomColide.grupo, 0, 0):
                    boomColide.bomba_relogio = True
                    item.kill()
                elif item.tipo == 'chuta_bombas' and item in pygame.sprite.groupcollide(grupoItens, boomColide.grupo, 0, 0):
                    boomColide.pode_chutar_bombas = True
                    item.kill()
                elif item.tipo == 'aumenta_vida' and item in pygame.sprite.groupcollide(grupoItens, boomColide.grupo, 0, 0):
                    boomColide.numero_vidas += 1
                    item.kill()

            for monstroColide, monstro in dicMonstros.items():
                if monstroColide.num_vidas == 0:
                    monstroColide.esta_vivo = False
                if monstroColide.esta_vivo:
                    monstroColide.decide_direcao()
                    monstroColide.move(monstro, monstroColideGrupo, paredeGrupo, bombaGrupo, monster_frames_direita, monster_frames_esquerda, monster_frames_subindo, monster_frames_descendo, monster_frames_morte)

            if not boomColide.invulneravel:
                boomColide.morte_por_monstro(boom, monstroColideGrupo, frame_morte)

            if not boomColide.esta_vivo:
                boom.img = frame_morte[boom.indice_img_morte]
                boom.image = pygame.image.load(boom.img)
                boom.indice_img_morte += 1

            if boom.img == "imagens/boom_moviments/boomBranco/morte_7.png" or boom.img == "imagens/boom_moviments/boomAzul/morte_7.png" or boom.img == "imagens/boom_moviments/boomPreto/morte_7.png" or boom.img == "imagens/boom_moviments/boomVerde/morte_7.png" or boom.img == "imagens/boom_moviments/boomVermelho/morte_7.png":
                if boomColide.tipo_morte == 'por_tempo':
                    boomColide.numero_vidas -= 1
                boomColide.esta_vivo = True
                pygame.mixer.music.load('sons/32_Time Up.ogg')
                pygame.mixer.music.play(0)
                pause1 = 'imagens/imagens_jogo/perdeu_vida.png'
                imagem_pause = pygame.image.load(pause1)
                pause = not pause
                if not quant_monstros == 3: # se nao eh a primeira fase
                    boomColide = PersonagemColisao(30, 30, boomColide.numero_vidas)
                    boomColide.score = score_ao_entrar_na_fase

            paredeGrupo.draw(screen)
            grupoItens.draw(screen)
            
            for b in bombaGrupo:
                if b.tipo == 'normal':
                    b.image = pygame.image.load(imagensBomba_normal[b.indice_imagem])
                elif b.tipo == 'bomba_relogio':
                    b.image = pygame.image.load(imagensBomba_relogio[b.indice_imagem])
                b.indice_imagem += 1
                if b.indice_imagem == 6:
                    b.indice_imagem = 0                 

            bombaGrupo.draw(screen)

            for monstro in monstroGrupo:
                for monstroColide in monstroColideGrupo:
                    if (monstro.rect.left == monstroColide.rect.left) and (monstro.rect.top == (monstroColide.rect.top - 30)) and not monstroColide.esta_vivo:
                        monstro.image = pygame.image.load(monster_frames_morte[monstroColide.indice_imagem_morte])
                        monstroColide.indice_imagem_morte += 1
                        if monstroColide.indice_imagem_morte == 7:
                            monstroColide.kill()
                            monstro.kill()
            
            monstroGrupo.draw(screen)

            boom.grupo.draw(screen)
            
            if boomColide.numero_vidas == 0:
                ordena_recordes(nome_jogador, boomColide.score)

            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            cor = (255,255,255)
            imagem_nome = font.render(nome_jogador,1,cor)
            screen.blit(imagem_nome,(650,10))

            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            branco = (255,255,255)
            amarelo = (255,255,0)
            fase_nome = font.render('Fase:',1,branco)
            if quant_monstros == 3:
                stage = '1'
            elif quant_monstros == 4:
                stage = '2'
            else:
                stage = '3'
            fase_numero = font.render(stage,1,amarelo)
            screen.blit(fase_nome,(650,40))
            screen.blit(fase_numero,(725,40))

            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            cor = (0,0,0)
            numero_vidas = str(boomColide.numero_vidas)
            imagem_numero_vidas = font.render(numero_vidas,1,cor)
            vida = pygame.image.load('imagens/aumenta_vida.png')
            screen.blit(vida,(650,90))
            screen.blit (imagem_numero_vidas,(690,90))
   
            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            cor = (0,0,0)
            numero_bombas = str(boomColide.max_bombas)
            imagem_numero_bombas = font.render(numero_bombas,1,cor)
            bomba = pygame.image.load('imagens/aumenta_bomba.png')
            screen.blit(bomba,(650,140))
            screen.blit (imagem_numero_bombas,(690,140))

            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            cor = (0,0,0)
            numero_fogo = str(boomColide.potencia_bomba)
            imagem_numero_fogo = font.render(numero_fogo,1,cor)
            fogo = pygame.image.load('imagens/aumenta_fogo.png')
            screen.blit(fogo,(650,190))
            screen.blit (imagem_numero_fogo,(690,190))

            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            verde = (0,255,0)
            vermelho = (255,0,0)
            velocidade1 = boomColide.velocidade % 10
            if velocidade1 == 0:
                imagem_velocidade1 = font.render('ON',1,verde)
            else:
                imagem_velocidade1 = font.render('--',1,vermelho)
            velocidade = pygame.image.load('imagens/aumenta_velocidade.png')
            screen.blit(velocidade,(650,250))
            screen.blit (imagem_velocidade1,(690,250))

            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            verde = (0,255,0)
            vermelho = (255,0,0)
            tem_b_relogio = boomColide.bomba_relogio
            if tem_b_relogio == True:
                imagem_b_relogio = font.render('ON',1,verde)
            else:
                imagem_b_relogio = font.render('--',1,vermelho)
            b_relogio = pygame.image.load('imagens/bomba_relogio.png')
            screen.blit(b_relogio,(650,290))
            screen.blit (imagem_b_relogio,(690,290))        

            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            verde = (0,255,0)
            vermelho = (255,0,0)
            tem_chute = boomColide.pode_chutar_bombas
            if tem_chute == True:
                imagem_chute = font.render('ON',1,verde)
            else:
                imagem_chute = font.render('--',1,vermelho)
            chute = pygame.image.load('imagens/chuta_bombas.png')
            screen.blit(chute,(650,330))
            screen.blit (imagem_chute,(690,330))        

            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            cor = (0,255,255)
            score = boomColide.score
            numero_score = font.render(str(score),1,cor)
            nome_score = font.render('Score:',1,(0,0,0))
            screen.blit(nome_score,(650,370))
            screen.blit(numero_score,(665,400))

            contador_regressivo = tempo_fase - relogio/1000
            if contador_regressivo <= 0:
                boomColide.estado = 'morto'
                boomColide.esta_vivo = False
                boomColide.tipo_morte = 'por_tempo'
            font = pygame.font.SysFont("Courier New",20)
            font.set_bold(True)
            cor = (0,255,255)
            tempo = contador_regressivo
            numero_tempo = font.render(str(contador_regressivo),1,cor)
            nome_tempo = font.render('Tempo:',1,(0,0,0))
            screen.blit(nome_tempo,(650,420))
            screen.blit(numero_tempo,(670,450))

            if boomColide.estado == 'morto':
                morto = not morto
                pygame.mixer.music.load('sons/31_Draw.ogg')
                pygame.mixer.music.play(0)

            if morto:
                screen.blit(imagem_morte,(0,0))

            if len(monstroGrupo) == 0 and quant_monstros == 5:
                pause1 = 'imagens/imagens_jogo/zerada.png'
                imagem_pause = pygame.image.load(pause1)
                pygame.mixer.music.load('sons/12_Stage Clear.ogg')
                pygame.mixer.music.play(0)
                pause = not pause

            elif len(monstroGrupo) == 0:
                pause1 = 'imagens/imagens_jogo/tela_estagio_completo.png'
                imagem_pause = pygame.image.load(pause1)
                pygame.mixer.music.load('sons/12_Stage Clear.ogg')
                pygame.mixer.music.play(0)
                pause = not pause
                
            if pause and pause1 == 'imagens/imagens_jogo/tela_estagio_completo.png':
                screen.blit(imagem_pause,(0,0))
                font = pygame.font.SysFont("Courier New",35)
                string_contador ='%s x10' % contador_regressivo
                imagem_contador = font.render((string_contador),1,(255,255,255))
                imagem_score = font.render(str(score),1,(255,255,255))
                boomColide.score = boomColide.score + (10 * contador_regressivo)
                imagem_multiplicado = font.render(str(boomColide.score),1,(255,255,255))

                screen.blit(imagem_score,(270,300))
                screen.blit(imagem_contador,(270,330))
                screen.blit(imagem_multiplicado,(270,390))
                
            elif pause:
                screen.blit(imagem_pause,(0,0))
        
            if contador_regressivo == 145:
                boomColide.invulneravel = False

            pygame.display.update()

        while pause:
            if pause1 == 'imagens/imagens_jogo/tela_pause.png':
                pygame.mixer.music.pause()
                for event in pygame.event.get():
                    if event.type == KEYDOWN:           
                        if event.key == K_RETURN:
                            pygame.mixer.music.unpause()
                            pause = not pause
            elif pause1 == 'imagens/imagens_jogo/tela_pergunta_se_quer_sair.png':
                for event in pygame.event.get():
                    if event.type == KEYDOWN:           
                        if event.key == K_s:
                            from Menu import *
                            menu('jogador_unico')
                        elif event.key == K_n:
                            pause = not pause
                        
            elif pause1 == 'imagens/imagens_jogo/tela_estagio_completo.png':
                
                for event in pygame.event.get():
                    if event.type == KEYDOWN:           
                        if event.key == K_RETURN:
                            if quant_monstros == 3:
                                elementos_fase = fase(2)
                            elif quant_monstros == 4:
                                elementos_fase = fase(3)
                            jogo(nome_jogador, elementos_fase, boomColide, boomColide.numero_vidas, personagem)
                    
            elif pause1 == 'imagens/imagens_jogo/perdeu_vida.png':
                for event in pygame.event.get():
                    if event.type == KEYDOWN:           
                        if event.key == K_RETURN:
                            jogo(nome_jogador, elementos_fase, boomColide, boomColide.numero_vidas, personagem)
                        if event.key == K_ESCAPE:
                            from Menu import *
                            menu('jogador_unico')
                            
            elif pause1 == 'imagens/imagens_jogo/zerada.png':
                pygame.mixer.music.load('sons/33_Victory.ogg')
                pygame.mixer.music.play(-1)
                for event in pygame.event.get():
                    if event.type == KEYDOWN:           
                        if event.key == K_ESCAPE:
                            from Menu import *
                            menu('jogador_unico')

        while morto:
            for event in pygame.event.get():
                if event.type == KEYDOWN:           
                    if event.key == K_ESCAPE:
                        from Menu import *
                        menu('jogador_unico')
